package com.yq.ylmall.product.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yq.ylmall.dto.product.*;
import com.yq.ylmall.model.product.Product;
import com.yq.ylmall.vo.product.ProductInfoVo;
import com.yq.ylmall.vo.product.ProductPageVo;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * <p>
 * 商品 服务类
 * </p>
 *
 * @author yzk789
 * @since 2024-05-30
 */
public interface IProductService extends IService<Product> {

    /**
     * 分页条件查询商品
     *
     * @param dto {@link ProductQueryDto}
     * @return IPage <{@link ProductPageVo}>
     */
    IPage<ProductPageVo> queryProduct(ProductQueryDto dto);

    /**
     * 根据商品ID查询商品所有相关信息
     *
     * @param productId 商品ID
     * @return {@link ProductInfoVo}
     */
    ProductInfoVo getProductInfoById(Long productId);

    /**
     * 商品操作：有ID更新，无ID新增
     *
     * @param dto {@link ProductDto}
     */
    void operateProduct(ProductDto dto);

    /**
     * 根据ID删除商品
     *
     * @param id 商品ID
     */
    void removeProduct(Long id);

    /**
     * 审核商品
     *
     * @param dto {@link ProductCheckDto}
     */
    void checkProduct(ProductCheckDto dto);

    /**
     * 商品上下架处理
     *
     * @param dto {@link ProductSaleDto}
     */
    void onSale(ProductSaleDto dto);

    void decreaseStock(ProductDecreaseDto productDecrease);
}
